﻿/****************************************************
	文件：SingletonAutoMono.cs
	作者：WithoutUmbrella_Boy
	邮箱: 1026188730@qq.com
	日期：2021/02/14 22:12   	
	功能：自动的MonoBehaviour单例对象
*****************************************************/
using UnityEngine;
//继承这种自动创建的 单例模式基类 不需要我们手动去拖 或者 api去加了
//想用他 直接 GetInstance就行了
//这种方法的妙处就是在场景创建一个空的游戏物体，并且将脚本给挂载上去，将空物体名字变成类名
public class SingletonAutoMono<T> : MonoBehaviour where T : MonoBehaviour  //里氏转换原则，父类装子类
{
    private static T instance;

    public static T GetInstance()
    {
        if (instance==null)
        {
            GameObject obj = new GameObject();
            //设置对象的名字为脚本名
            obj.name = typeof(T).ToString();
            //让这个单例模式对象 过场景 不移除
            //因为 单例模式对象 往往 是存在整个程序生命周期中的
            DontDestroyOnLoad(obj);
            instance = obj.AddComponent<T>();
        }
        return instance;
    }

    
}
